#include <iostream>

using namespace std;

const int N = 1e5 + 10;
int n, q;
int a[N];

int main(){
    scanf("%d%d", &n, &q);

    for(int i = 0; i < n; i++ ){
        scanf("%d", &a[i]);
    }


    while(q -- ){
        int k;
        scanf("%d", &k);

        int l = 0, r = n - 1;
        while(l < r){
            int mid = (l + r) >> 1;
            //先二分查找到满足条件的边界点，即刚好大于等于询问元素的位置
            if(a[mid] >= k)    r = mid;
            else l = mid + 1;
        }
        //判断该位置，是否刚好等于询问元素
        //1、若不等于，即该数组不存在询问元素
        //2、若等于，即至少存在一个符合元素，因此再次二分，查找新的边界点
        if(a[l] != k)   cout << "-1 -1" << endl;
        else{
            cout << l << " ";
            //由于此时l = r,更新l和r
            int l = 0, r = n - 1;
            //重新二分
            while(l < r){
                int mid = (l + r + 1) >> 1;
                if(a[mid] <= k)      l = mid;
                else r = mid - 1;
            }
            cout << l << endl;
        }
    
        
    }
    return 0;
}